// 1.导入mysql包
const mySql = require('mysql')
// 2.建立与mysql数据库的连接关系
const db = mySql.createPool({
    host: '127.0.0.1', //数据库的ip地址
    user: 'root',//登录数据库的账号
    password: 'admin123',//密码
    database: 'my_db_01'//指定要操作那个数据库
})

// 测试是否mysql是否引入成功
// db.query('select 1',(err,results)=>{
//     if(err) return console.log(err.message);
//     console.log(results);
// })


// 查  *代表所有 也可自定义属性
// const sqlStr = 'select * from users'
// db.query(sqlStr, (err, results) => {
//     if (err) return console.log(err.message);
//     // 如果执行的是 select 查询语句 则返回结果是数组
//     console.log(results);
// })


// 增
// 插入数据 
// 向users表中 新增一条数据 其中username的值为Spider-Man password的值为pcc123
// const user = {username:'Spider-Man',password:'pcc123'}
// // 定义待执行的sql语句
// const sqlStr = 'insert into users (username,password) values(?,?)' // 注意: ?为sql语句里的占位符
// // 可以用数组传递占位符的真值
// db.query(sqlStr,[user.username,user.password],(err,resulet)=>{
//     // 插入失败
//     if(err) return console.log(err.message);

//     // 通过affectedRows判断是否插入成功
//     // 注意:如果执行的是insert into 插入语句 则返回结果是一个对象
//     if(resulet.affectedRows === 1) {
//         console.log('插入成功');
//     }
// })
// 增语法糖  SET ? 
// 注意:(插入的值需要是一一对应的关系才可使用)
// const user = {username:'Spider-Man2',password:'pcc4321'}
// const sqlStr = 'insert into users SET ?' 
// db.query(sqlStr,user,(err,resulet)=>{
//     if(err) return console.log(err.message)
//     if(resulet.affectedRows === 1) {
//         console.log('插入成功');
//     }
// })



// 改 (更新数据)
// 此更新数据sql语句 成功后 resluts返回结果也是一个对象
// const user = {
//     //要更新数据的id 一定保证数据库里有这个id 否则会失败
//     id:5,
//     username:'aaa',
//     password:'000'
// }
// console.log(user);
// const sqlStr = 'update users set username=?,password=? where id=?'
// db.query(sqlStr,[user.username,user.password,user.id],(err,results)=>{
//     if(err) return console.log(err.message);
//     if(results.affectedRows === 1) {
//         console.log('更新数据成功');
//     }
// })
// 改 语法糖
// const user = {
//     //要更新数据的id 一定保证数据库里有这个id 否则会失败
//     id:5,
//     username:'aaaa',
//     password:'0000'
// }
// // where限定条件不可省略
// const sqlStr = 'update users set ? where id=?'
// db.query(sqlStr,[user,user.id],(err,results)=>{
//     if(err) return console.log(err.message);
//     if(results.affectedRows === 1) {
//         console.log('更新数据成功');
//     }
// })


// 删 
// const sqlStr = 'delete from users where id=?'
// // sql只要一个占位符时 可以省略数组直接写值
// db.query(sqlStr, 5, (err, results) => {
//     if (err) return console.log(err.message);
//     if (results.affectedRows === 1) {
//         console.log('删除成功');
//     }
// })
// 实际开发中 不建议使用delete直接对数据库的数据进行删除  因为太危险了 
// 而是采取另一种方式 名为:标记删除
// 即根据修改数据的status状态来模拟删除
// 示例:
const sqlStr = 'update users  set status=1 where id=?'
db.query(sqlStr, 4, (err, results) => {
    if (err) return console.log(err.message);
    if (results.affectedRows === 1) {
        console.log('标记删除成功');
    }
})
